package com.mybatis.basic.service;

public interface RedisService {

	/**
	 * 添加一条数据 String数据结构
	 * @param key 键
	 * @param obj 值 ==> 要存储的对象
	 * @param time 过期时间 单位：秒 -1为不过期
	 * @return 成功/失败
	 */
	public void set(String key, Object value, long time, Class<?> clazz) throws Exception;

	/**
	 * 添加一条数据 Hash数据结构
	 * @param name hash对象名称
	 * @param key 键
	 * @param value 值
	 * @param time 过期时间 单位：秒 -1为不过期
	 * @param clazz 添加的数据类型
	 * @throws Exception 异常
	 */
	public void set(String name, String key, Object value, long time, Class<?> clazz) throws Exception;

	/**
	 * 获取数据 String数据结构
	 * @param key 键
	 * @return 对象
	 */
	public Object getObject(String key, Class<?> clazz) throws Exception;
	public Object getObject(String name, String key, Class<?> clazz) throws Exception;

	/**
	 * 获取Int类型数据 String数据结构
	 * @param key
	 * @return
	 * @throws Exception
	 */
	public Integer getInt(String key) throws Exception;

	/**
	 * 获取String类型数据 String数据结构
	 * @param key
	 * @return
	 * @throws Exception
	 */
	public String getString(String key) throws Exception;

	/**
	 * 获取Double类型数据 String数据结构
	 * @param key
	 * @return
	 * @throws Exception
	 */
	public Double getDouble(String key) throws Exception;

	/**
	 * 删除一条数据 String数据结构
	 * @param key 键
	 * @return 成功/失败
	 */
	public void del(String key) throws Exception;

	/**
	 * 删除hash内一条数据
	 * @param group hash名称
	 * @param key 键
	 * @throws Exception
	 */
	public void delByHash(String group,String key) throws Exception;

	/**
	 * 删除一条hash数据
	 * @param group hash名称
	 */
	public void delByHash(String group);

	/**
	 * *慎用<BR>
	 * 清空整个缓存数据库 
	 * @return
	 */
	public boolean clearDb();

}
